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(-) (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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. --- 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 +++-- 51 files changed, 122 insertions(+), 88 deletions(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 --- .../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 ++++++++ 11 files changed, 317 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 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(+) (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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 --- packages/gnuradio/gnuradio.inc | 7 +++++-- packages/gnuradio/gnuradio_svn.bb | 5 ++--- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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. --- packages/qi/qi.inc | 46 ++++++++++++++++++++++++++++++++++++++++++++++ packages/qi/qi_git.bb | 7 +++++++ 2 files changed, 53 insertions(+) create mode 100644 packages/qi/qi.inc create mode 100644 packages/qi/qi_git.bb (limited to 'packages') 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(-) (limited to 'packages') 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 --- packages/python/python-2.5-manifest.inc | 6 +++--- packages/python/python_2.5.2.bb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'packages') 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 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 (limited to 'packages') 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 --- packages/python/python-2.5-manifest.inc | 2 +- packages/python/python_2.5.2.bb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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(+) (limited to 'packages') 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(+) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 --- packages/linux-libc-headers/linux-libc-headers.inc | 2 +- packages/net-snmp/net-snmp_5.4.1.bb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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(-) (limited to 'packages') 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. --- packages/python/python-pygame-1.8.1/Setup | 1 - packages/python/python-pygame_1.8.1.bb | 8 ++++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 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. --- packages/u-boot/u-boot-openmoko-devel_git.bb | 8 -------- packages/u-boot/u-boot-openmoko.inc | 4 +--- 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 packages/u-boot/u-boot-openmoko-devel_git.bb (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 --- packages/xkeyboard-config/xkeyboard-config_1.3.bb | 20 -------------------- packages/xkeyboard-config/xkeyboard-config_1.4.bb | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 20 deletions(-) delete mode 100644 packages/xkeyboard-config/xkeyboard-config_1.3.bb create mode 100644 packages/xkeyboard-config/xkeyboard-config_1.4.bb (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 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 --- packages/gnome/pyorbit_2.24.0.bb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 packages/gnome/pyorbit_2.24.0.bb (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 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 --- 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 +++++- 3 files changed, 34 insertions(+), 5 deletions(-) (limited to 'packages') 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(-) (limited to 'packages') 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 --- packages/freesmartphone/frameworkd_git.bb | 2 +- packages/freesmartphone/zhone_git.bb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 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 --- packages/libtorrent/libtorrent_0.12.3.bb | 16 ++++++++++++++++ packages/libtorrent/rtorrent_0.8.3.bb | 11 +++++++++++ 2 files changed, 27 insertions(+) create mode 100644 packages/libtorrent/libtorrent_0.12.3.bb create mode 100644 packages/libtorrent/rtorrent_0.8.3.bb (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 (limited to 'packages') 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 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. --- packages/vala-terminal/vala-terminal_git.bb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 packages/vala-terminal/vala-terminal_git.bb (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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 (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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. --- 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 +- 9 files changed, 97 insertions(+), 49 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 (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 --- packages/evince/evince_2.24.1.bb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 packages/evince/evince_2.24.1.bb (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 --- packages/xorg-xserver/xserver-xorg-1.5.3/drmfix.patch | 13 +++++++++++++ packages/xorg-xserver/xserver-xorg_1.5.3.bb | 13 +++++++++++++ 2 files changed, 26 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 (limited to 'packages') 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 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 (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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 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 --- 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 ++-- 7 files changed, 401 insertions(+), 15 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 (limited to 'packages') 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. --- packages/debianutils/debianutils_2.30.bb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/debianutils/debianutils_2.30.bb (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(+) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 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(-) (limited to 'packages') 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 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 (limited to 'packages') 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(-) (limited to 'packages') 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(+) (limited to 'packages') 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(-) (limited to 'packages') 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 (limited to 'packages') 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