Hello community,
here is the log from the commit of package kdemultimedia4 for openSUSE:Factory
checked in at Mon Jan 10 11:37:31 CET 2011.
--------
--- KDE/kdemultimedia4/kdemultimedia4.changes 2010-12-03 17:14:20.000000000 +0100
+++ /mounts/work_src_done/STABLE/kdemultimedia4/kdemultimedia4.changes 2011-01-04 18:07:43.000000000 +0100
@@ -1,0 +2,16 @@
+Tue Jan 4 18:07:40 CET 2011 - dmueller@suse.de
+
+- update to 4.5.95
+ * KDE 4.6 RC2
+ * no upstream changelog available.
+
+
+-------------------------------------------------------------------
+Wed Dec 22 11:39:14 CET 2010 - dmueller@suse.de
+
+- update to 4.5.90
+ * KDE 4.6 RC1
+ * no upstream changelog available.
+
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
kdemultimedia-4.5.85.tar.bz2
New:
----
kdemultimedia-4.5.95.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdemultimedia4.spec ++++++
--- /var/tmp/diff_new_pack.XhIp6A/_old 2011-01-10 11:37:05.000000000 +0100
+++ /var/tmp/diff_new_pack.XhIp6A/_new 2011-01-10 11:37:05.000000000 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package kdemultimedia4 (Version 4.5.85)
+# spec file for package kdemultimedia4 (Version 4.5.95)
#
-# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -34,7 +34,7 @@
Group: System/GUI/KDE
Summary: kdemultimedia base package
Url: http://www.kde.org
-Version: 4.5.85
+Version: 4.5.95
Release: 1
Source0: kdemultimedia-%version.tar.bz2
Patch0: 4_6_BRANCH.diff
++++++ kdemultimedia-4.5.85.tar.bz2 -> kdemultimedia-4.5.95.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/cmake/modules/FindFFMPEG.cmake new/kdemultimedia-4.5.95/cmake/modules/FindFFMPEG.cmake
--- old/kdemultimedia-4.5.85/cmake/modules/FindFFMPEG.cmake 1970-01-01 01:00:00.000000000 +0100
+++ new/kdemultimedia-4.5.95/cmake/modules/FindFFMPEG.cmake 2010-12-22 10:56:09.000000000 +0100
@@ -0,0 +1,70 @@
+# - Try to find FFMPEG
+# Once done this will define
+#
+# FFMPEG_FOUND - system has FFMPEG
+# FFMPEG_INCLUDE_DIR - the include directories
+# FFMPEG_LIBRARY_DIR - the directory containing the libraries
+# FFMPEG_LIBRARIES - link these to use FFMPEG
+# FFMPEG_SWSCALE_FOUND - FFMPEG also has SWSCALE
+#
+
+include(FindPackageHandleStandardArgs)
+
+set( FFMPEG_HEADERS avformat.h avcodec.h avutil.h )
+set( FFMPEG_PATH_SUFFIXES libavformat libavcodec libavutil )
+
+
+if ( FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
+ set (FFMPEG_FOUND TRUE)
+endif ( FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
+
+INCLUDE(FindPkgConfig)
+if ( PKG_CONFIG_FOUND )
+pkg_check_modules( PC_AVFORMAT libavformat )
+pkg_check_modules( PC_AVCODEC libavcodec )
+pkg_check_modules( PC_AVUTIL libavutil )
+endif( PKG_CONFIG_FOUND)
+
+
+find_library(AVFORMAT_LIBRARIES avformat
+ HINTS ${PC_AVFORMAT_LIBDIR} ${PC_AVFORMAT_LIBRARY_DIRS}
+)
+
+find_library(AVCODEC_LIBRARIES avcodec
+ HINTS ${PC_AVCODEC_LIBDIR} ${PC_AVCODEC_LIBRARY_DIRS}
+)
+
+find_library(AVUTIL_LIBRARIES avutil
+ HINTS ${PC_AVUTIL_LIBDIR} ${PC_AVUTIL_LIBRARY_DIRS}
+)
+
+
+find_path(AVFORMAT_INCLUDE_DIR avformat.h
+ HINTS ${PC_AVFORMAT_LIBDIR} ${PC_AVFROMAT_INCLUDE_DIRS}
+ PATH_SUFFIXES libavformat
+)
+
+find_path(AVCODEC_INCLUDE_DIR avcodec.h
+ HINTS ${PC_AVCODEC_LIBDIR} ${PC_AVCODEC_INCLUDE_DIRS}
+ PATH_SUFFIXES libavcodec
+)
+
+find_path(AVUTIL_INCLUDE_DIR avutil.h
+ HINTS ${PC_AVUTIL_LIBDIR} ${PC_AVUTIL_INCLUDE_DIRS}
+ PATH_SUFFIXES libavutil
+)
+
+
+SET( FFMPEG_INCLUDE_PATHS ${AVFORMAT_INCLUDE_DIR}
+ ${AVCODEC_INCLUDE_DIR}
+ ${AVUTIL_INCLUDE_DIR})
+
+
+if (AVFORMAT_LIBRARIES AND AVCODEC_LIBRARIES AND AVUTIL_LIBRARIES )
+SET (FFMPEG_LIBRARIES TRUE)
+endif (AVFORMAT_LIBRARIES AND AVCODEC_LIBRARIES AND AVUTIL_LIBRARIES )
+
+
+find_package_handle_standard_args(ffmpeg "Could not find ffmpeg; available at www.ffmpeg.org" FFMPEG_LIBRARIES FFMPEG_INCLUDE_PATHS)
+
+mark_as_advanced(FFMPEG_INCLUDE_PATHS FFMPEG_LIBRARIES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/CMakeLists.txt new/kdemultimedia-4.5.95/CMakeLists.txt
--- old/kdemultimedia-4.5.85/CMakeLists.txt 2010-11-11 15:42:16.000000000 +0100
+++ new/kdemultimedia-4.5.95/CMakeLists.txt 2010-12-22 10:56:10.000000000 +0100
@@ -17,7 +17,7 @@
alsa_configure_file(${CMAKE_BINARY_DIR}/config-alsa.h)
-macro_optional_find_package(FFmpeg)
+macro_optional_find_package(FFMPEG)
macro_log_feature(FFMPEG_FOUND "FFmpeg" "FFmpeg libraries" "FFmpeg" FALSE "http://www.ffmpeg.org" "FFmpeg required for FFMpegVideoPreview backend")
macro_optional_find_package(Swscale)
macro_log_feature(SWSCALE_FOUND "swscale" "FFmpeg video scaling libraries" "swscale" FALSE "" "swscale required for FFMpegVideoPreview backend")
Files old/kdemultimedia-4.5.85/doc/dragonplayer/index.cache.bz2 and new/kdemultimedia-4.5.95/doc/dragonplayer/index.cache.bz2 differ
Files old/kdemultimedia-4.5.85/doc/juk/index.cache.bz2 and new/kdemultimedia-4.5.95/doc/juk/index.cache.bz2 differ
Files old/kdemultimedia-4.5.85/doc/kcontrol/cddbretrieval/index.cache.bz2 and new/kdemultimedia-4.5.95/doc/kcontrol/cddbretrieval/index.cache.bz2 differ
Files old/kdemultimedia-4.5.85/doc/kioslave/audiocd/index.cache.bz2 and new/kdemultimedia-4.5.95/doc/kioslave/audiocd/index.cache.bz2 differ
Files old/kdemultimedia-4.5.85/doc/kmix/index.cache.bz2 and new/kdemultimedia-4.5.95/doc/kmix/index.cache.bz2 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/dragonplayer/misc/dragonplayer.desktop new/kdemultimedia-4.5.95/dragonplayer/misc/dragonplayer.desktop
--- old/kdemultimedia-4.5.85/dragonplayer/misc/dragonplayer.desktop 2010-10-05 13:39:55.000000000 +0200
+++ new/kdemultimedia-4.5.95/dragonplayer/misc/dragonplayer.desktop 2010-12-22 10:56:09.000000000 +0100
@@ -53,7 +53,7 @@
Name[wa]=Djouweu Dragon
Name[x-test]=xxDragon Playerxx
Name[zh_CN]=Dragon Player
-Name[zh_TW]=神龍播放器
+Name[zh_TW]=影音播放_神龍播放器
GenericName=Video Player
GenericName[ar]=مشغل فيديو
GenericName[ast]=Reproductor de vídeu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/CMakeLists.txt new/kdemultimedia-4.5.95/ffmpegthumbs/CMakeLists.txt
--- old/kdemultimedia-4.5.85/ffmpegthumbs/CMakeLists.txt 2010-05-27 19:26:24.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/CMakeLists.txt 2010-12-22 10:56:09.000000000 +0100
@@ -4,15 +4,6 @@
${FFMPEG_INCLUDE_DIR}
)
-if (FFMPEG_INCLUDE_DIR_OLD_STYLE)
- SET( CMAKE_CXX_FLAGS "-D FFMPEG_AVFORMAT_API=1" )
- SET( CMAKE_CXX_FLAGS "-D FFMPEG_AVCODEC_API=1" )
-endif(FFMPEG_INCLUDE_DIR_OLD_STYLE)
-
-if (SWSCALE_INCLUDE_DIR)
- SET( CMAKE_CXX_FLAGS "-D FFMPEG_SWSCALE_API=1" )
-endif(SWSCALE_INCLUDE_DIR)
-
# Certain versions of FFMPEG need this to be defined
SET( CMAKE_CXX_FLAGS "-D __STDC_CONSTANT_MACROS" )
@@ -26,12 +17,10 @@
kde4_add_plugin(ffmpegthumbs ${ffmpegthumbs_PART_SRCS})
-
target_link_libraries(ffmpegthumbs ${KDE4_KIO_LIBS} ${AVUTIL_LIBRARIES} ${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} ${SWSCALE_LIBRARIES} )
install(TARGETS ffmpegthumbs DESTINATION ${PLUGIN_INSTALL_DIR})
-
########### install files ###############
install(FILES ffmpegthumbs.desktop DESTINATION ${SERVICES_INSTALL_DIR})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/ChangeLog new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/ChangeLog
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/ChangeLog 2010-05-16 22:04:11.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/ChangeLog 2010-12-22 10:56:09.000000000 +0100
@@ -1,5 +1,9 @@
FFmpegThumbnailer
+version 2.0.2
+- Fixed compilation error against latest ffmpeg
+- Size of the filmstrip overlay is dependant on thumbnail size
+
Version 2.0.1
- Setting the thumbnail size to 0 will use the original video size (thanks to John Fremlin)
- Fix for video files containing lots of audio packets before a video packet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/filmstripfilter.cpp new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/filmstripfilter.cpp
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/filmstripfilter.cpp 2010-05-16 22:04:11.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/filmstripfilter.cpp 2010-12-22 10:56:09.000000000 +0100
@@ -14,6 +14,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#include "filmstrip.h"
#include "filmstripfilter.h"
namespace ffmpegthumbnailer
@@ -22,32 +23,62 @@
static const int FILMHOLE_WIDTH = 12;
static const int FILMHOLE_HEIGHT = 10;
-static const uint8_t filmHole[FILMHOLE_WIDTH * FILMHOLE_HEIGHT * 3] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x23, 0x23, 0x7a, 0x7a, 0x7a, 0x83, 0x83, 0x83, 0x8c, 0x8c, 0x8c, 0x90, 0x90, 0x90, 0x8e, 0x8e, 0x8e, 0x52, 0x52, 0x52, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x6e, 0x6e, 0x83, 0x83, 0x83, 0x93, 0x93, 0x93, 0xa3, 0xa3, 0xa3, 0xab, 0xab, 0xab, 0xa8, 0xa8, 0xa8, 0x9b, 0x9b, 0x9b, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x72, 0x72, 0x8e, 0x8e, 0x8e, 0xa4, 0xa4, 0xa4, 0xbb, 0xbb, 0xbb, 0xc4, 0xc4, 0xc4, 0xc1, 0xc1, 0xc1, 0xaf, 0xaf, 0xaf, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e, 0x90, 0x90, 0x90, 0xa6, 0xa6, 0xa6, 0xbe, 0xbe, 0xbe, 0xc8, 0xc8, 0xc8, 0xc4, 0xc4, 0xc4, 0x8e, 0x8e, 0x8e, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
+static const quint8* determineFilmStrip(quint32 videoWidth, quint32& filmStripWidth, quint32& filmStripHeight)
+{
+ if (videoWidth <= SMALLEST_FILM_STRIP_WIDTH * 2)
+ {
+ return NULL;
+ }
+
+ if (videoWidth <= 96)
+ {
+ filmStripWidth = filmStripHeight = 4;
+ return filmStrip4;
+ }
+
+ if (videoWidth <= 192)
+ {
+ filmStripWidth = filmStripHeight = 8;
+ return filmStrip8;
+ }
+
+ if (videoWidth <= 384)
+ {
+ filmStripWidth = filmStripHeight = 16;
+ return filmStrip16;
+ }
+
+ if (videoWidth <= 768)
+ {
+ filmStripWidth = filmStripHeight = 32;
+ return filmStrip32;
+ }
+
+ filmStripWidth = filmStripHeight = 64;
+ return filmStrip64;
+}
+
void FilmStripFilter::process(VideoFrame& videoFrame)
{
- if (videoFrame.width < FILMHOLE_WIDTH * 2) {
+ quint32 filmStripWidth;
+ quint32 filmStripHeight;
+ const quint8* filmHole = determineFilmStrip(videoFrame.width, filmStripWidth, filmStripHeight);
+
+ if (!filmHole)
+ {
return;
}
-
+
int frameIndex = 0;
int filmHoleIndex = 0;
int offset = (videoFrame.width * 3) - 3;
- for (int i = 0; i < videoFrame.height; ++i) {
- for (int j = 0; j < FILMHOLE_WIDTH * 3; j += 3) {
+ for (quint32 i = 0; i < videoFrame.height; ++i)
+ {
+ for (quint32 j = 0; j < filmStripWidth * 3; j+=3)
+ {
int currentFilmHoleIndex = filmHoleIndex + j;
videoFrame.frameData[frameIndex + j] = filmHole[currentFilmHoleIndex];
@@ -59,8 +90,8 @@
videoFrame.frameData[frameIndex + offset - j + 2] = filmHole[currentFilmHoleIndex + 2];
}
frameIndex += videoFrame.lineSize;
- filmHoleIndex = (i % FILMHOLE_HEIGHT) * FILMHOLE_WIDTH * 3;
- }
+ filmHoleIndex = (i % filmStripHeight) * filmStripWidth * 3;
+ }
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/filmstrip.h new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/filmstrip.h
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/filmstrip.h 1970-01-01 01:00:00.000000000 +0100
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/filmstrip.h 2010-12-22 10:56:09.000000000 +0100
@@ -0,0 +1,575 @@
+// Copyright (C) 2010 Dirk Vanden Boer
+//
+// 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
+
+#ifndef FILMSTRIP_H
+#define FILMSTRIP_H
+#include <QtGlobal>
+
+static const quint32 SMALLEST_FILM_STRIP_WIDTH = 4;
+
+static const quint8 filmStrip4[4 * 4 * 3] = {
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0kkk\207\207\207777\0\0\0\237\237\237\303\303"
+ "\303RRR\0\0\0\0\0\0\0\0\0\0\0"
+};
+
+static const quint8 filmStrip8[8 * 8 * 3] = {
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\40\40\40""777::::::444\1\1\1\0\0\0\2"
+ "\2\2\205\205\205\320\320\320\333\333\333\333\333\333\313\313\313\32\32\32"
+ "\0\0\0\2\2\2\236\236\236\360\360\360\373\373\373\373\373\373\353\353\353"
+ "\37\37\37\0\0\0\0\0\0FFFsssyyyyyynnn\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"
+};
+
+static const quint8 filmStrip16[16 * 16 * 3] = {
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\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\11\11\14\14\14"
+ "\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\4\4\4\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0""888YYYrrr|||\200\200\200\200\200\200\200\200\200"
+ "\200\200\200zzzmmm\23\23\23\0\0\0\0\0\0\0\0\0\0\0\0\11\11\11YYY\214\214\214"
+ "\257\257\257\276\276\276\302\302\302\302\302\302\302\302\302\301\301\301"
+ "\273\273\273\250\250\250@@@\0\0\0\0\0\0\0\0\0\0\0\0\14\14\14qqq\257\257\257"
+ "\326\326\326\347\347\347\353\353\353\354\354\354\354\354\354\353\353\353"
+ "\344\344\344\317\317\317PPP\0\0\0\0\0\0\0\0\0\0\0\0\15\15\15{{{\274\274\274"
+ "\345\345\345\365\365\365\372\372\372\373\373\373\373\373\373\371\371\371"
+ "\363\363\363\335\335\335VVV\0\0\0\0\0\0\0\0\0\0\0\0\14\14\14xxx\270\270\270"
+ "\340\340\340\361\361\361\365\365\365\366\366\366\366\366\366\365\365\365"
+ "\356\356\356\331\331\331UUU\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1ggg\240\240\240"
+ "\306\306\306\326\326\326\332\332\332\334\334\334\334\334\334\332\332\332"
+ "\324\324\324\277\277\277\"\"\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\32\32"
+ "\32\40\40\40###$$$$$$$$$$$$###\12\12\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"
+};
+
+static const quint8 filmStrip32[32 * 32 * 3] = {
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\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\27\27\27"
+ "\34\34\34\40\40\40\"\"\"$$$%%%%%%&&&&&&&&&&&&&&&&&&%%%%%%###\35\35\35\3\3"
+ "\3\0\0\0\0\0\0\0\0\0\0\0\0\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\34\34""666EEESSS]]]eeeiiilllmmmooonnnnnnnnnnnnnnnmmmkkkgggaaaXXX\15"
+ "\15\15\0\0\0\0\0\0\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""666JJJ]]]nnn|||\205\205\205\213\213\213\217\217\217\220\220\220\221"
+ "\221\221\221\221\221\221\221\221\221\221\221\222\222\222\221\221\221\220"
+ "\220\220\215\215\215\210\210\210\201\201\201vvvXXX\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27\27\27EEE]]]uuu\212\212\212\232"
+ "\232\232\245\245\245\254\254\254\260\260\260\262\262\262\263\263\263\263"
+ "\263\263\263\263\263\263\263\263\263\263\263\262\262\262\261\261\261\256"
+ "\256\256\252\252\252\241\241\241\222\222\222\200\200\200\0\0\0\0\0\0\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\34\34RRRnnn\212\212\212\242"
+ "\242\242\264\264\264\300\300\300\310\310\310\314\314\314\316\316\316\317"
+ "\317\317\317\317\317\317\317\317\317\317\317\317\317\317\317\317\317\315"
+ "\315\315\312\312\312\305\305\305\273\273\273\254\254\254\227\227\227\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\40\40\40\\\\\\|"
+ "||\232\232\232\264\264\264\307\307\307\324\324\324\334\334\334\341\341\341"
+ "\342\342\342\343\343\343\344\344\344\344\344\344\344\344\344\344\344\344"
+ "\343\343\343\342\342\342\337\337\337\331\331\331\317\317\317\277\277\277"
+ "\250\250\250\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\"\"\"ddd\206\206\206\245\245\245\300\300\300\324\324\324\342\342\342\352"
+ "\352\352\356\356\356\360\360\360\361\361\361\361\361\361\361\361\361\361"
+ "\361\361\361\361\361\361\361\361\360\360\360\354\354\354\346\346\346\334"
+ "\334\334\313\313\313\264\264\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0$$$hhh\212\212\212\253\253\253\307\307\307\333\333\333"
+ "\351\351\351\360\360\360\365\365\365\367\367\367\370\370\370\370\370\370"
+ "\370\370\370\370\370\370\370\370\370\367\367\367\366\366\366\363\363\363"
+ "\355\355\355\343\343\343\322\322\322\272\272\272\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$$$iii\214\214\214\255\255\255\311\311"
+ "\311\336\336\336\353\353\353\363\363\363\370\370\370\372\372\372\373\373"
+ "\373\373\373\373\373\373\373\373\373\373\373\373\373\372\372\372\371\371"
+ "\371\366\366\366\360\360\360\345\345\345\324\324\324\274\274\274\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$$$hhh\212\212\212\253"
+ "\253\253\307\307\307\333\333\333\351\351\351\360\360\360\365\365\365\367"
+ "\367\367\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\367"
+ "\367\367\366\366\366\363\363\363\355\355\355\343\343\343\322\322\322\272"
+ "\272\272\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\"\""
+ "\"ddd\206\206\206\245\245\245\300\300\300\324\324\324\342\342\342\352\352"
+ "\352\356\356\356\360\360\360\361\361\361\361\361\361\361\361\361\361\361"
+ "\361\361\361\361\361\361\361\360\360\360\354\354\354\346\346\346\334\334"
+ "\334\313\313\313\264\264\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\23\23\23\\\\\\|||\232\232\232\264\264\264\310\310\310\324"
+ "\324\324\334\334\334\341\341\341\342\342\342\343\343\343\344\344\344\344"
+ "\344\344\344\344\344\344\344\344\343\343\343\342\342\342\337\337\337\331"
+ "\331\331\317\317\317\277\277\277\222\222\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;;;nnn\212\212\212\242\242\242\264"
+ "\264\264\301\301\301\310\310\310\314\314\314\316\316\316\317\317\317\320"
+ "\320\320\320\320\320\320\320\320\320\320\320\317\317\317\315\315\315\313"
+ "\313\313\305\305\305\273\273\273\254\254\254\33\33\33\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\33\33:::EEEMMMSS"
+ "SVVVXXXYYYYYYZZZZZZZZZZZZYYYXXXWWWUUUFFF\10\10\10\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+};
+
+static const quint8 filmStrip64[64 * 64 * 3] = {
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\20\20\"\""
+ "\"///666;;;@@@DDDHHHKKKMMMOOOQQQRRRRRRSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
+ "TTTTTSSSSSSRRRRRRQQQOOOMMMHHH999\36\36\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\3\3\3\36\36\36...444;;;BB"
+ "BHHHNNNRRRWWWZZZ]]]___aaabbbcccddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedd"
+ "ddddcccbbbaaa___]]]ZZZWWWRRR===\10\10\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\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\36\36///777???GGGNNNVVV\\\\\\bbbgg"
+ "gkkknnnppprrrtttuuuvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvvvvvvuuutttrr"
+ "rqqqnnnkkkgggbbb\\\\\\CCC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\20\20\20...666@@@IIIRRR[[[cccjjjqqqvvv{{{~~~\201\201\201\203"
+ "\203\203\205\205\205\206\206\206\207\207\207\207\207\207\210\210\210\210"
+ "\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210"
+ "\210\210\210\210\210\210\210\210\210\210\210\207\207\207\207\207\207\206"
+ "\206\206\205\205\205\203\203\203\201\201\201~~~{{{vvvqqqjjjccc)))\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\"\"\"444>>>IIISSS^^^hhhqq"
+ "qyyy\200\200\200\206\206\206\213\213\213\217\217\217\222\222\222\225\225"
+ "\225\226\226\226\230\230\230\230\230\230\231\231\231\231\231\231\232\232"
+ "\232\232\232\232\232\232\232\232\232\232\232\232\232\232\232\232\232\232"
+ "\232\232\232\232\232\232\232\231\231\231\231\231\231\231\231\231\230\230"
+ "\230\226\226\226\225\225\225\222\222\222\217\217\217\213\213\213\206\206"
+ "\206\200\200\200yyyqqqRRR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0///;;;GGGRRR^^^iiittt~~~\207\207\207\217\217\217\226\226\226\233\233"
+ "\233\237\237\237\243\243\243\245\245\245\247\247\247\251\251\251\251\251"
+ "\251\252\252\252\252\252\252\253\253\253\253\253\253\253\253\253\253\253"
+ "\253\253\253\253\253\253\253\253\253\253\253\253\253\253\253\253\252\252"
+ "\252\252\252\252\251\251\251\251\251\251\247\247\247\245\245\245\243\243"
+ "\243\240\240\240\233\233\233\226\226\226\217\217\217\207\207\207~~~ooo\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""666BBBNNN[[[hhhttt"
+ "\200\200\200\213\213\213\224\224\224\235\235\235\244\244\244\251\251\251"
+ "\256\256\256\262\262\262\264\264\264\266\266\266\267\267\267\270\270\270"
+ "\271\271\271\271\271\271\272\272\272\272\272\272\272\272\272\272\272\272"
+ "\272\272\272\272\272\272\272\272\272\272\272\272\272\272\272\272\272\272"
+ "\271\271\271\270\270\270\270\270\270\266\266\266\264\264\264\262\262\262"
+ "\256\256\256\252\252\252\244\244\244\235\235\235\224\224\224\213\213\213"
+ "\200\200\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;;;HHH"
+ "UUUcccqqq~~~\213\213\213\226\226\226\241\241\241\251\251\251\261\261\261"
+ "\267\267\267\274\274\274\277\277\277\302\302\302\304\304\304\305\305\305"
+ "\306\306\306\307\307\307\307\307\307\310\310\310\310\310\310\310\310\310"
+ "\310\310\310\310\310\310\310\310\310\310\310\310\310\310\310\310\310\310"
+ "\310\310\310\307\307\307\306\306\306\306\306\306\304\304\304\302\302\302"
+ "\277\277\277\274\274\274\267\267\267\261\261\261\251\251\251\241\241\241"
+ "\226\226\226\213\213\213\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0@@@MMM\\\\\\jjjyyy\207\207\207\225\225\225\241\241\241\254\254\254"
+ "\265\265\265\275\275\275\303\303\303\310\310\310\314\314\314\317\317\317"
+ "\321\321\321\322\322\322\323\323\323\324\324\324\324\324\324\325\325\325"
+ "\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325"
+ "\325\325\325\325\325\325\325\325\325\324\324\324\323\323\323\322\322\322"
+ "\321\321\321\317\317\317\314\314\314\310\310\310\303\303\303\275\275\275"
+ "\265\265\265\254\254\254\241\241\241\225\225\225\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0DDDRRRaaaqqq\200\200\200\217\217\217\235\235"
+ "\235\252\252\252\265\265\265\276\276\276\307\307\307\315\315\315\322\322"
+ "\322\326\326\326\331\331\331\333\333\333\334\334\334\335\335\335\336\336"
+ "\336\336\336\336\337\337\337\337\337\337\337\337\337\337\337\337\337\337"
+ "\337\337\337\337\337\337\337\337\337\337\337\337\337\337\337\337\336\336"
+ "\336\335\335\335\334\334\334\333\333\333\331\331\331\326\326\326\322\322"
+ "\322\315\315\315\307\307\307\277\277\277\265\265\265\252\252\252\235\235"
+ "\235\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0HHHWWWfffvvv\206"
+ "\206\206\226\226\226\244\244\244\261\261\261\275\275\275\306\306\306\317"
+ "\317\317\325\325\325\332\332\332\336\336\336\341\341\341\343\343\343\345"
+ "\345\345\345\345\345\346\346\346\347\347\347\347\347\347\347\347\347\347"
+ "\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347"
+ "\347\347\347\347\347\346\346\346\346\346\346\345\345\345\343\343\343\341"
+ "\341\341\336\336\336\332\332\332\325\325\325\317\317\317\306\306\306\275"
+ "\275\275\261\261\261\244\244\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0KKKZZZjjj{{{\213\213\213\233\233\233\252\252\252\267\267\267"
+ "\303\303\303\315\315\315\325\325\325\334\334\334\341\341\341\345\345\345"
+ "\350\350\350\352\352\352\354\354\354\354\354\354\355\355\355\356\356\356"
+ "\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356"
+ "\356\356\356\356\356\356\356\356\356\356\356\356\355\355\355\355\355\355"
+ "\354\354\354\352\352\352\350\350\350\345\345\345\341\341\341\334\334\334"
+ "\325\325\325\315\315\315\303\303\303\267\267\267\252\252\252\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0MMM]]]mmm~~~\217\217\217\237\237"
+ "\237\256\256\256\274\274\274\310\310\310\322\322\322\332\332\332\341\341"
+ "\341\346\346\346\352\352\352\355\355\355\357\357\357\361\361\361\362\362"
+ "\362\362\362\362\363\363\363\363\363\363\363\363\363\363\363\363\363\363"
+ "\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363"
+ "\363\362\362\362\362\362\362\361\361\361\357\357\357\355\355\355\352\352"
+ "\352\346\346\346\341\341\341\332\332\332\322\322\322\310\310\310\274\274"
+ "\274\256\256\256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0NN"
+ "N^^^ooo\200\200\200\221\221\221\242\242\242\261\261\261\277\277\277\313\313"
+ "\313\325\325\325\335\335\335\344\344\344\351\351\351\355\355\355\360\360"
+ "\360\362\362\362\364\364\364\365\365\365\365\365\365\366\366\366\366\366"
+ "\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366"
+ "\366\366\366\366\366\366\366\366\366\366\365\365\365\365\365\365\364\364"
+ "\364\362\362\362\360\360\360\355\355\355\351\351\351\344\344\344\335\335"
+ "\335\325\325\325\313\313\313\277\277\277\261\261\261\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PPP```qqq\202\202\202\223\223\223\244\244"
+ "\244\263\263\263\301\301\301\315\315\315\327\327\327\340\340\340\346\346"
+ "\346\354\354\354\357\357\357\362\362\362\364\364\364\366\366\366\367\367"
+ "\367\367\367\367\370\370\370\370\370\370\370\370\370\370\370\370\370\370"
+ "\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370"
+ "\370\367\367\367\367\367\367\366\366\366\364\364\364\362\362\362\360\360"
+ "\360\354\354\354\346\346\346\340\340\340\327\327\327\315\315\315\301\301"
+ "\301\263\263\263\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PP"
+ "P```qqq\203\203\203\224\224\224\245\245\245\264\264\264\302\302\302\316\316"
+ "\316\331\331\331\341\341\341\350\350\350\355\355\355\361\361\361\364\364"
+ "\364\366\366\366\370\370\370\371\371\371\371\371\371\372\372\372\372\372"
+ "\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372"
+ "\372\372\372\372\372\372\372\372\372\372\371\371\371\371\371\371\370\370"
+ "\370\366\366\366\364\364\364\361\361\361\355\355\355\350\350\350\341\341"
+ "\341\331\331\331\316\316\316\302\302\302\264\264\264\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PPP```qqq\203\203\203\224\224\224\245\245"
+ "\245\264\264\264\302\302\302\316\316\316\331\331\331\341\341\341\350\350"
+ "\350\355\355\355\361\361\361\364\364\364\366\366\366\370\370\370\371\371"
+ "\371\371\371\371\372\372\372\372\372\372\372\372\372\372\372\372\372\372"
+ "\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372\372"
+ "\372\371\371\371\371\371\371\370\370\370\366\366\366\364\364\364\361\361"
+ "\361\355\355\355\350\350\350\341\341\341\331\331\331\316\316\316\302\302"
+ "\302\264\264\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PP"
+ "P```qqq\202\202\202\223\223\223\244\244\244\263\263\263\301\301\301\315\315"
+ "\315\327\327\327\340\340\340\346\346\346\354\354\354\357\357\357\362\362"
+ "\362\364\364\364\366\366\366\367\367\367\367\367\367\370\370\370\370\370"
+ "\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370\370"
+ "\370\370\370\370\370\370\370\370\370\370\367\367\367\367\367\367\366\366"
+ "\366\364\364\364\362\362\362\360\360\360\354\354\354\346\346\346\340\340"
+ "\340\327\327\327\315\315\315\301\301\301\263\263\263\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0NNN^^^ooo\200\200\200\221\221\221\242\242"
+ "\242\261\261\261\277\277\277\313\313\313\325\325\325\335\335\335\344\344"
+ "\344\351\351\351\355\355\355\360\360\360\362\362\362\364\364\364\365\365"
+ "\365\365\365\365\366\366\366\366\366\366\366\366\366\366\366\366\366\366"
+ "\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366\366"
+ "\366\365\365\365\365\365\365\364\364\364\362\362\362\360\360\360\355\355"
+ "\355\351\351\351\344\344\344\335\335\335\325\325\325\313\313\313\277\277"
+ "\277\261\261\261\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0MM"
+ "M]]]mmm~~~\217\217\217\237\237\237\256\256\256\274\274\274\310\310\310\322"
+ "\322\322\332\332\332\341\341\341\346\346\346\352\352\352\355\355\355\357"
+ "\357\357\361\361\361\362\362\362\362\362\362\363\363\363\363\363\363\363"
+ "\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363\363"
+ "\363\363\363\363\363\363\363\363\362\362\362\362\362\362\361\361\361\357"
+ "\357\357\355\355\355\352\352\352\346\346\346\341\341\341\332\332\332\322"
+ "\322\322\310\310\310\274\274\274\256\256\256\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0HHHZZZjjj{{{\213\213\213\233\233\233\252\252\252"
+ "\267\267\267\303\303\303\315\315\315\325\325\325\334\334\334\341\341\341"
+ "\345\345\345\350\350\350\352\352\352\354\354\354\354\354\354\355\355\355"
+ "\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356"
+ "\356\356\356\356\356\356\356\356\356\356\356\356\356\356\356\355\355\355"
+ "\355\355\355\354\354\354\352\352\352\350\350\350\345\345\345\341\341\341"
+ "\334\334\334\325\325\325\315\315\315\303\303\303\267\267\267\243\243\243"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""999WWWfffvvv\206"
+ "\206\206\226\226\226\244\244\244\261\261\261\275\275\275\306\306\306\317"
+ "\317\317\325\325\325\332\332\332\336\336\336\341\341\341\343\343\343\345"
+ "\345\345\345\345\345\346\346\346\347\347\347\347\347\347\347\347\347\347"
+ "\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347"
+ "\347\347\347\347\347\346\346\346\346\346\346\345\345\345\343\343\343\341"
+ "\341\341\336\336\336\332\332\332\325\325\325\317\317\317\306\306\306\275"
+ "\275\275\261\261\261\201\201\201\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\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\36\36RRRaaaqqq\200\200\200\217\217\217\235\235\235\252"
+ "\252\252\265\265\265\277\277\277\307\307\307\315\315\315\322\322\322\326"
+ "\326\326\331\331\331\333\333\333\334\334\334\335\335\335\336\336\336\336"
+ "\336\336\337\337\337\337\337\337\337\337\337\337\337\337\337\337\337\337"
+ "\337\337\337\337\337\337\337\337\337\337\337\337\337\337\336\336\336\335"
+ "\335\335\335\335\335\333\333\333\331\331\331\326\326\326\322\322\322\315"
+ "\315\315\307\307\307\277\277\277\265\265\265\252\252\252GGG\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0===\\\\\\jjjyyy\207\207\207"
+ "\225\225\225\241\241\241\254\254\254\265\265\265\275\275\275\303\303\303"
+ "\310\310\310\314\314\314\317\317\317\321\321\321\322\322\322\323\323\323"
+ "\324\324\324\324\324\324\325\325\325\325\325\325\325\325\325\325\325\325"
+ "\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325\325"
+ "\324\324\324\323\323\323\322\322\322\321\321\321\317\317\317\314\314\314"
+ "\310\310\310\303\303\303\275\275\275\265\265\265\254\254\254~~~\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10CCCcccq"
+ "qq~~~\213\213\213\227\227\227\241\241\241\252\252\252\261\261\261\270\270"
+ "\270\274\274\274\300\300\300\303\303\303\305\305\305\306\306\306\307\307"
+ "\307\310\310\310\310\310\310\311\311\311\311\311\311\311\311\311\311\311"
+ "\311\311\311\311\311\311\311\311\311\311\311\311\311\311\311\311\310\310"
+ "\310\310\310\310\307\307\307\306\306\306\305\305\305\303\303\303\300\300"
+ "\300\275\275\275\270\270\270\262\262\262\252\252\252~~~\22\22\22\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0))"
+ ")RRRooo\200\200\200\213\213\213\225\225\225\235\235\235\244\244\244\252\252"
+ "\252\257\257\257\262\262\262\265\265\265\267\267\267\270\270\270\271\271"
+ "\271\272\272\272\272\272\272\273\273\273\273\273\273\273\273\273\273\273"
+ "\273\273\273\273\273\273\273\273\273\273\273\273\273\273\273\273\272\272"
+ "\272\272\272\272\271\271\271\270\270\270\267\267\267\265\265\265\262\262"
+ "\262\257\257\257\243\243\243\201\201\201GGG\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+};
+
+#endif
+
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.cpp new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.cpp
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.cpp 2010-10-05 13:39:55.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.cpp 2010-12-22 10:56:09.000000000 +0100
@@ -19,16 +19,8 @@
#include
#include <QFileInfo>
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
extern "C" {
-#ifdef FFMPEG_SWSCALE_API
-#include
-#else
#include
-#endif
}
using namespace std;
@@ -192,7 +184,7 @@
return;
}
- int64_t timestamp = AV_TIME_BASE * static_cast(timeInSeconds);
+ qint64 timestamp = AV_TIME_BASE * static_cast<qint64>(timeInSeconds);
if (timestamp < 0) {
timestamp = 0;
@@ -250,7 +242,7 @@
avcodec_get_frame_defaults(m_pFrame);
- int frameFinished;
+ int frameFinished = 0;
#if LIBAVCODEC_VERSION_MAJOR < 53
int bytesDecoded = avcodec_decode_video(m_pVideoCodecContext, m_pFrame, &frameFinished, m_pPacket->data, m_pPacket->size);
@@ -364,12 +356,12 @@
}
}
-void MovieDecoder::createAVFrame(AVFrame** avFrame, uint8_t** frameBuffer, int width, int height, PixelFormat format)
+void MovieDecoder::createAVFrame(AVFrame** avFrame, quint8** frameBuffer, int width, int height, PixelFormat format)
{
*avFrame = avcodec_alloc_frame();
int numBytes = avpicture_get_size(format, width, height);
- *frameBuffer = reinterpret_cast(av_malloc(numBytes));
+ *frameBuffer = reinterpret_cast(av_malloc(numBytes));
avpicture_fill((AVPicture*) *avFrame, *frameBuffer, format, width, height);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.h new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.h
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.h 2010-05-16 22:04:11.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.h 2010-12-22 10:56:09.000000000 +0100
@@ -17,30 +17,14 @@
#ifndef MOVIEDECODER_H
#define MOVIEDECODER_H
-#include <string>
-#include <vector>
-
#include "videoframe.h"
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+#include <QString>
extern "C" {
-#ifdef FFMPEG_AVCODEC_API
-#include
-#else
#include
-#endif
-#ifdef FFMPEG_AVFORMAT_API
-#include
-#else
#include
-#endif
}
-#include <QString>
-
namespace ffmpegthumbnailer
{
@@ -69,7 +53,7 @@
bool decodeVideoPacket();
bool getVideoPacket();
void convertAndScaleFrame(PixelFormat format, int scaledSize, bool maintainAspectRatio, int& scaledWidth, int& scaledHeight);
- void createAVFrame(AVFrame** avFrame, uint8_t** frameBuffer, int width, int height, PixelFormat format);
+ void createAVFrame(AVFrame** avFrame, quint8** frameBuffer, int width, int height, PixelFormat format);
void calculateDimensions(int squareSize, bool maintainAspectRatio, int& destWidth, int& destHeight);
private:
@@ -79,7 +63,7 @@
AVCodec* m_pVideoCodec;
AVStream* m_pVideoStream;
AVFrame* m_pFrame;
- uint8_t* m_pFrameBuffer;
+ quint8* m_pFrameBuffer;
AVPacket* m_pPacket;
bool m_FormatContextWasGiven;
bool m_AllowSeek;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/videoframe.h new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/videoframe.h
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/videoframe.h 2010-05-16 22:04:11.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/videoframe.h 2010-12-22 10:56:09.000000000 +0100
@@ -19,6 +19,7 @@
#include
#include <vector>
+#include <QtGlobal>
namespace ffmpegthumbnailer
{
@@ -34,7 +35,7 @@
int height;
int lineSize;
- std::vector frameData;
+ std::vector<quint8> frameData;
};
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/videothumbnailer.h new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/videothumbnailer.h
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbnailer/videothumbnailer.h 2010-05-16 22:04:11.000000000 +0200
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbnailer/videothumbnailer.h 2010-12-22 10:56:09.000000000 +0100
@@ -67,7 +67,7 @@
private:
int m_ThumbnailSize;
- uint16_t m_SeekPercentage;
+ quint16 m_SeekPercentage;
bool m_OverlayFilmStrip;
bool m_WorkAroundIssues;
bool m_MaintainAspectRatio;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbs.desktop new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbs.desktop
--- old/kdemultimedia-4.5.85/ffmpegthumbs/ffmpegthumbs.desktop 2010-12-03 16:00:09.000000000 +0100
+++ new/kdemultimedia-4.5.95/ffmpegthumbs/ffmpegthumbs.desktop 2010-12-10 16:18:46.000000000 +0100
@@ -12,8 +12,10 @@
Name[et]=Videofailid (ffmpegthumbs)
Name[fi]=Videotiedostot (ffmpegthumbs)
Name[fr]=Fichiers vidéo (ffmpegthumbs)
+Name[ga]=Comhaid Fhíse (ffmpegthumbs)
Name[hu]=Videófájlok (ffmpegthumbs)
Name[is]=Vídeóskrár (ffmpegthumbs)
+Name[it]=File video (ffmpegthumbs)
Name[ja]=動画ファイル (ffmpegthumbs)
Name[kk]=Видео файлдар (ffmpegthumbs)
Name[km]=ឯកសារវីដេអូ (ffmpegthumbs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/juk/juk.desktop new/kdemultimedia-4.5.95/juk/juk.desktop
--- old/kdemultimedia-4.5.85/juk/juk.desktop 2010-10-05 13:39:56.000000000 +0200
+++ new/kdemultimedia-4.5.95/juk/juk.desktop 2010-12-22 10:56:10.000000000 +0100
@@ -75,7 +75,7 @@
Name[x-test]=xxJuKxx
Name[zh_CN]=JuK
Name[zh_HK]=JuK
-Name[zh_TW]=JuK
+Name[zh_TW]=音樂播放_JuK
GenericName=Music Player
GenericName[ar]=مشغل الموسيقى
GenericName[ast]=Reproductor de música
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/juk/juk.notifyrc new/kdemultimedia-4.5.95/juk/juk.notifyrc
--- old/kdemultimedia-4.5.85/juk/juk.notifyrc 2010-12-03 16:00:09.000000000 +0100
+++ new/kdemultimedia-4.5.95/juk/juk.notifyrc 2010-12-22 10:56:10.000000000 +0100
@@ -12,8 +12,10 @@
Comment[et]=Muusikamängija Juk
Comment[fi]=Juk-musiikkisoitin
Comment[fr]=Lecteur multimédia Juk
+Comment[ga]=Seinnteoir Ceoil Juk
Comment[hu]=JuK zenelejátszó
Comment[is]=JuK tónlistarspilari
+Comment[it]=Lettore musicale Juk
Comment[ja]=Juk ミュージックプレーヤー
Comment[kk]=Juk музыка ойнатқышы
Comment[km]=កម្មវិធីចាក់តន្ត្រី Juk
@@ -107,7 +109,7 @@
Name[x-test]=xxJuKxx
Name[zh_CN]=JuK
Name[zh_HK]=JuK
-Name[zh_TW]=JuK
+Name[zh_TW]=音樂播放_JuK
[Event/coverDownloaded]
Name=Cover Successfully Downloaded
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/apps/KMixApp.cpp new/kdemultimedia-4.5.95/kmix/apps/KMixApp.cpp
--- old/kdemultimedia-4.5.85/kmix/apps/KMixApp.cpp 2010-09-12 21:31:04.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/apps/KMixApp.cpp 2011-01-04 15:15:49.000000000 +0100
@@ -75,11 +75,12 @@
// starts it again, the KMix main window will be shown.
// If KMix is restored by SM or the --keepvisibilty is used, KMix will NOT
// explicitly be shown.
- if ( !m_kmix ) {
- m_kmix->show();
- } else {
- kWarning(67100) << "KMixApp::newInstance() Window has not finished constructing yet so ignoring the show() request.";
- }
+ KUniqueApplication::newInstance();
+// if ( !m_kmix ) {
+// m_kmix->show();
+// } else {
+// kWarning(67100) << "KMixApp::newInstance() Window has not finished constructing yet so ignoring the show() request.";
+// }
}
else {
// CASE 2: If KMix is running, AND ( session gets restored OR keepvisibilty command line switch )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/apps/kmix.cpp new/kdemultimedia-4.5.95/kmix/apps/kmix.cpp
--- old/kdemultimedia-4.5.85/kmix/apps/kmix.cpp 2010-10-05 13:39:57.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/apps/kmix.cpp 2010-12-22 10:56:10.000000000 +0100
@@ -95,6 +95,10 @@
initActionsAfterInitMixer(); // init actions that require initialized mixer backend(s).
recreateGUI(false);
+
+ if ( !kapp->isSessionRestored() ) // done by the session manager otherwise
+ setInitialSize();
+
fixConfigAfterRead();
theKMixDeviceManager->initHotplug();
connect(theKMixDeviceManager, SIGNAL( plugged( const char*, const QString&, QString&)), SLOT (plugged( const char*, const QString&, QString&) ) );
@@ -198,16 +202,9 @@
void KMixWindow::initWidgets()
{
- // Main widget and layout
- setCentralWidget( new QWidget( this ) );
-
- // Widgets layout
- m_widgetsLayout = new QVBoxLayout( centralWidget() );
- m_widgetsLayout->setObjectName( QLatin1String( "m_widgetsLayout" ) );
- m_widgetsLayout->setSpacing( 0 );
- m_widgetsLayout->setMargin ( 0 );
-
- m_wsMixers = new KTabWidget( centralWidget() );
+ m_wsMixers = new KTabWidget();
+ m_wsMixers->setDocumentMode(true);
+ setCentralWidget(m_wsMixers);
m_wsMixers->setTabsClosable(true);
connect (m_wsMixers, SIGNAL(tabCloseRequested(int)), SLOT(saveAndCloseView(int)) );
@@ -220,12 +217,27 @@
connect( m_wsMixers, SIGNAL( currentChanged ( int ) ), SLOT( newMixerShown(int)) );
- m_widgetsLayout->addWidget(m_wsMixers);
-
// show menubar if the actions says so (or if the action does not exist)
menuBar()->setVisible( (_actionShowMenubar==0) || _actionShowMenubar->isChecked());
+}
+
- m_widgetsLayout->activate();
+void KMixWindow::setInitialSize()
+{
+ KConfigGroup config(KGlobal::config(), "Global");
+
+ // HACK: QTabWidget will bound its sizeHint to 200x200 unless scrollbuttons
+ // are disabled, so we disable them, get a decent sizehint and enable them
+ // back
+ m_wsMixers->setUsesScrollButtons(false);
+ QSize defSize = sizeHint();
+ m_wsMixers->setUsesScrollButtons(true);
+ QSize size = config.readEntry("Size", defSize );
+ if(!size.isEmpty()) resize(size);
+
+ QPoint defPos = pos();
+ QPoint pos = config.readEntry("Position", defPos);
+ move(pos);
}
@@ -410,18 +422,6 @@
bool showMenubar = config.readEntry("Menubar", true);
if (_actionShowMenubar) _actionShowMenubar->setChecked( showMenubar );
-
- // restore window size and position
- if ( !kapp->isSessionRestored() ) // done by the session manager otherwise
- {
- QSize defSize( minimumWidth(), height() );
- QSize size = config.readEntry("Size", defSize );
- if(!size.isEmpty()) resize(size);
-
- QPoint defPos = pos();
- QPoint pos = config.readEntry("Position", defPos);
- move(pos);
- }
}
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/apps/kmix.h new/kdemultimedia-4.5.95/kmix/apps/kmix.h
--- old/kdemultimedia-4.5.85/kmix/apps/kmix.h 2010-09-12 21:31:04.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/apps/kmix.h 2010-12-22 10:56:10.000000000 +0100
@@ -123,7 +123,6 @@
QString m_hwInfoString;
QString m_defaultCardOnStart;
bool m_dontSetDefaultCardOnStart;
- QVBoxLayout *m_widgetsLayout;
QLabel *m_errorLabel;
ViewDockAreaPopup *_dockAreaPopup;
unsigned int m_configVersion;
@@ -133,6 +132,7 @@
OSDWidget* osdWidget;
bool addMixerWidget(const QString& mixer_ID, GUIProfile *guiprof, int insertPosition);
+ void setInitialSize();
private slots:
void saveConfig();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/core/version.h new/kdemultimedia-4.5.95/kmix/core/version.h
--- old/kdemultimedia-4.5.85/kmix/core/version.h 2010-09-12 21:31:04.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/core/version.h 2011-01-04 15:15:49.000000000 +0100
@@ -20,6 +20,6 @@
*/
#ifndef APP_VERSION
-#define APP_VERSION "3.8-alpha"
+#define APP_VERSION "3.8"
#define KMIX_CONFIG_VERSION 3
#endif // APP_VERSION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/gui/kmixdockwidget.cpp new/kdemultimedia-4.5.95/kmix/gui/kmixdockwidget.cpp
--- old/kdemultimedia-4.5.85/kmix/gui/kmixdockwidget.cpp 2010-09-12 21:31:03.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/gui/kmixdockwidget.cpp 2011-01-04 15:15:49.000000000 +0100
@@ -61,6 +61,7 @@
, _oldPixmapType('-')
, _volumePopup(volumePopup)
, _kmixMainWindow(parent)
+ , _contextMenuWasOpen(false)
{
setToolTipIconByName("kmix");
setCategory(Hardware);
@@ -79,16 +80,22 @@
#endif
if (_volumePopup) {
- KMenu *volMenu = new KMenu(parent);
- _referenceWidget = new ViewDockAreaPopup(volMenu, "dockArea", Mixer::getGlobalMasterMixer(), 0, (GUIProfile*)0, parent);
- _referenceWidget->createDeviceWidgets();
-
- _volWA = new QWidgetAction(volMenu);
- _volWA->setDefaultWidget(_referenceWidget);
- volMenu->addAction(_volWA);
+ kDebug() << "Construct the ViewDockAreaPopup and actions";
+ _referenceWidget = new KMenu(parent);
+ ViewDockAreaPopup* _referenceWidget2 = new ViewDockAreaPopup(_referenceWidget, "dockArea", Mixer::getGlobalMasterMixer(), 0, (GUIProfile*)0, parent);
+ _referenceWidget2->createDeviceWidgets();
+
+ _volWA = new QWidgetAction(_referenceWidget);
+ _volWA->setDefaultWidget(_referenceWidget2);
+ _referenceWidget->addAction(_volWA);
+ //setAssociatedWidget(_referenceWidget);
//setAssociatedWidget(_referenceWidget); // If you use the popup, associate that instead of the MainWindow
}
+ else {
+ _volWA = 0;
+ _referenceWidget = 0;
+ }
}
@@ -294,83 +301,74 @@
void KMixDockWidget::activate(const QPoint &pos)
{
kDebug() << "Activate at " << pos;
- KMenu* dockAreaPopup = qobject_cast(_referenceWidget);
- if ( _referenceWidget != 0 ) {
- kDebug() << "Use default KStatusNotifierItem behavior";
- if ( contextMenu()->isVisible() ) {
- kDebug() << "ContextMenu was visible";
- }
- /*
- The following code is plain wrong. In the menu, we ALWAYS want to use the main window.
- See
-
-
-
- Bug 191477 - Show Mixer Window doesn't show the mixer window
- */
+ bool showHideMainWindow = false;
+ showHideMainWindow |= (_referenceWidget == 0);
+ showHideMainWindow |= (pos.x() == 0 && pos.y() == 0); // HACK. When the action comes from the context menu, the pos is (0,0)
- // Use default KStatusNotifierItem behavior if we are not using the
- // dockAreaPopup
+ if ( showHideMainWindow ) {
+ // Use default KStatusNotifierItem behavior if we are not using the dockAreaPopup
+ kDebug() << "Use default KStatusNotifierItem behavior";
+ setAssociatedWidget(_kmixMainWindow);
KStatusNotifierItem::activate(pos);
return;
-
-
- /*
- QWidget* p = (QWidget*)parent();
- if ( p->isVisible()) {
- p->hide();
- }
- else {
- p->show();
- }
- */
-
- return;
}
- kDebug() << "Skip default KStatusNotifierItem behavior";
+ KMenu* dockAreaPopup =_referenceWidget; // TODO Refactor to use _referenceWidget directly
+ kDebug() << "Skip default KStatusNotifierItkdebem behavior";
if ( dockAreaPopup->isVisible() ) {
dockAreaPopup->hide();
+ kDebug() << "dap is visible => hide and return";
return;
}
- if (contextMenu()->isVisible()) {
- contextMenu()->hide();
- }
+// if (dockAreaPopup->isVisible()) {
+// contextMenu()->hide();
+// setAssociatedWidget(_kmixMainWindow);
+// KStatusNotifierItem::activate(pos);
+// kDebug() << "cm is visible => setAssociatedWidget(_kmixMainWindow)";
+// return;
+// }
+ if ( false ) {}
+ else {
+ setAssociatedWidget(_referenceWidget);
+ kDebug() << "cm is NOT visible => setAssociatedWidget(_referenceWidget)";
+
+ dockAreaPopup->adjustSize();
+ int h = dockAreaPopup->height();
+ int x = pos.x() - dockAreaPopup->width()/2;
+ int y = pos.y() - h;
- dockAreaPopup->adjustSize();
- int h = dockAreaPopup->height();
- int x = pos.x() - dockAreaPopup->width()/2;
- int y = pos.y() - h;
+ // kDebug() << "h="<size() << x << y;
- dockAreaPopup->move(x, y); // so that the mouse is outside of the widget
- kDebug() << "moving to" << dockAreaPopup->size() << x << y;
+ dockAreaPopup->show();
- dockAreaPopup->show();
+ // Now handle Multihead displays. And also make sure that the dialog is not
+ // moved out-of-the screen on the right (see Bug 101742).
+ const QDesktopWidget* vdesktop = QApplication::desktop();
+ const QRect& vScreenSize = vdesktop->screenGeometry(dockAreaPopup);
+ //const QRect screenGeometry(const QWidget *widget) const
+ if ( (x+dockAreaPopup->width()) > (vScreenSize.width() + vScreenSize.x()) ) {
+ // move horizontally, so that it is completely visible
+ dockAreaPopup->move(vScreenSize.width() + vScreenSize.x() - dockAreaPopup->width() -1 , y);
+ kDebug() << "Multihead: (case 1) moving to" << vScreenSize.x() << "," << vScreenSize.y();
+ }
+ else if ( x < vScreenSize.x() ) {
+ // horizontally out-of bound
+ dockAreaPopup->move(vScreenSize.x(), y);
+ kDebug() << "Multihead: (case 2) moving to" << vScreenSize.x() << "," << vScreenSize.y();
+ }
+ // the above stuff could also be implemented vertically
- // Now handle Multihead displays. And also make sure that the dialog is not
- // moved out-of-the screen on the right (see Bug 101742).
- const QDesktopWidget* vdesktop = QApplication::desktop();
- const QRect& vScreenSize = vdesktop->screenGeometry(dockAreaPopup);
- //const QRect screenGeometry(const QWidget *widget) const
- if ( (x+dockAreaPopup->width()) > (vScreenSize.width() + vScreenSize.x()) ) {
- // move horizontally, so that it is completely visible
- dockAreaPopup->move(vScreenSize.width() + vScreenSize.x() - dockAreaPopup->width() -1 , y);
- }
- else if ( x < vScreenSize.x() ) {
- // horizontally out-of bound
- dockAreaPopup->move(vScreenSize.x(), y);
+ KWindowSystem::setState( dockAreaPopup->winId(), NET::StaysOnTop | NET::SkipTaskbar | NET::SkipPager );
}
- // the above stuff could also be implemented vertically
-
- KWindowSystem::setState( dockAreaPopup->winId(), NET::StaysOnTop | NET::SkipTaskbar | NET::SkipPager );
}
// void
@@ -415,6 +413,7 @@
}
}
+
void
KMixDockWidget::dockMute()
{
@@ -452,12 +451,13 @@
// Enable/Disable "Muted" menu item
MixDevice* md = Mixer::getGlobalMasterMD();
KToggleAction *dockMuteAction = static_cast(actionCollection()->action("dock_mute"));
- //kDebug(67100) << "---> md=" << md << "dockMuteAction=" << dockMuteAction << "isMuted=" << md->isMuted();
+ kDebug(67100) << "---> md=" << md << "dockMuteAction=" << dockMuteAction << "isMuted=" << md->isMuted();
if ( md != 0 && dockMuteAction != 0 ) {
bool hasSwitch = md->playbackVolume().hasSwitch();
dockMuteAction->setEnabled( hasSwitch );
dockMuteAction->setChecked( hasSwitch && md->isMuted() );
}
+ _contextMenuWasOpen = true;
}
#include "kmixdockwidget.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/gui/kmixdockwidget.h new/kdemultimedia-4.5.95/kmix/gui/kmixdockwidget.h
--- old/kdemultimedia-4.5.85/kmix/gui/kmixdockwidget.h 2010-09-12 21:31:03.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/gui/kmixdockwidget.h 2011-01-04 15:15:49.000000000 +0100
@@ -67,7 +67,8 @@
void toggleMinimizeRestore();
private:
- ViewDockAreaPopup *_referenceWidget;
+ //ViewDockAreaPopup *_referenceWidget;
+ KMenu *_referenceWidget;
QWidgetAction *_volWA;
Phonon::MediaObject *_audioPlayer;
bool _playBeepOnVolumeChange;
@@ -78,6 +79,9 @@
KMixWindow* _kmixMainWindow;
Mixer *m_mixer;
+ bool _contextMenuWasOpen;
+
+
private slots:
void dockMute();
void trayWheelEvent(int delta);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/gui/mdwslider.cpp new/kdemultimedia-4.5.95/kmix/gui/mdwslider.cpp
--- old/kdemultimedia-4.5.85/kmix/gui/mdwslider.cpp 2010-09-12 21:31:03.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/gui/mdwslider.cpp 2011-01-04 15:15:49.000000000 +0100
@@ -49,7 +49,6 @@
#include "verticaltext.h"
#include "mdwmoveaction.h"
-static const int MIN_SLIDER_SIZE = 50;
/**
* MixDeviceWidget that represents a single mix device, inlcuding PopUp, muteLED, ...
@@ -71,7 +70,7 @@
m_iconLabelSimple(0), m_qcb(0), m_muteText(0),
m_extraCaptureLabel( 0 ), m_label( 0 ), /*m_captureLED( 0 ),*/
m_captureCheckbox(0), m_captureText(0), labelSpacing(0),
- muteButtonSpacing(false), captureLEDSpacing(false), m_moveMenu(0)
+ muteButtonSpacing(false), captureLEDSpacing(false), m_moveMenu(0), _mdwMoveActions(new KActionCollection(this))
{
createActions();
createWidgets( showMuteLED, showCaptureLED );
@@ -280,7 +279,6 @@
controlLayout->setAlignment(Qt::AlignHCenter|Qt::AlignTop);
setLayout(controlLayout);
controlLayout->setContentsMargins(0,0,0,0);
- controlLayout->setSpacing(0);
//add device icon
m_iconLabelSimple = 0L;
@@ -501,6 +499,7 @@
}
+ const int minSliderSize = fontMetrics().height() * 10;
for ( int i=0; i<= Volume::CHIDMAX; i++ ) {
if ( vol._chmask & Volume::_channelMaskEnum[i] ) {
Volume::ChannelID chid = Volume::ChannelID(i);
@@ -522,10 +521,10 @@
sliderBig->setValue( maxvol - vol.getVolume( chid ) );
if ( _orientation == Qt::Vertical ) {
- sliderBig->setMinimumHeight( MIN_SLIDER_SIZE );
+ sliderBig->setMinimumHeight( minSliderSize );
}
else {
- sliderBig->setMinimumWidth( MIN_SLIDER_SIZE );
+ sliderBig->setMinimumWidth( minSliderSize );
}
if ( ! _pctl->getBackgroundColor().isEmpty() ) {
QString bcolor(_pctl->getBackgroundColor());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/gui/viewsliders.cpp new/kdemultimedia-4.5.95/kmix/gui/viewsliders.cpp
--- old/kdemultimedia-4.5.85/kmix/gui/viewsliders.cpp 2010-09-12 21:31:03.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/gui/viewsliders.cpp 2010-12-22 10:56:10.000000000 +0100
@@ -62,19 +62,20 @@
{
if ( _vflags & ViewBase::Vertical ) {
_layoutMDW = new QVBoxLayout(this);
+ _layoutMDW->setAlignment(Qt::AlignLeft|Qt::AlignTop);
_layoutSliders = new QVBoxLayout();
_layoutSliders->setAlignment(Qt::AlignVCenter|Qt::AlignLeft);
}
else
{
_layoutMDW = new QHBoxLayout(this);
+ _layoutMDW->setAlignment(Qt::AlignHCenter|Qt::AlignTop);
_layoutSliders = new QHBoxLayout();
_layoutSliders->setAlignment(Qt::AlignHCenter|Qt::AlignTop);
// Place enums in an own box right from the sliders.
}
_layoutSliders->setContentsMargins(0,0,0,0);
_layoutSliders->setSpacing(0);
- _layoutMDW->setAlignment(Qt::AlignLeft|Qt::AlignTop);
_layoutMDW->setContentsMargins(0,0,0,0);
_layoutMDW->setSpacing(0);
_layoutMDW->addItem( _layoutSliders );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/kmix_autostart.desktop new/kdemultimedia-4.5.95/kmix/kmix_autostart.desktop
--- old/kdemultimedia-4.5.85/kmix/kmix_autostart.desktop 2010-10-05 13:39:57.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/kmix_autostart.desktop 2010-12-22 10:56:10.000000000 +0100
@@ -153,5 +153,5 @@
Name[x-test]=xxKMixxx
Name[zh_CN]=KMix
Name[zh_HK]=KMix
-Name[zh_TW]=KMix 混音器
+Name[zh_TW]=音效調整_KMix
Categories=Qt;KDE;AudioVideo;Mixer;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/kmixctrl_restore.desktop new/kdemultimedia-4.5.95/kmix/kmixctrl_restore.desktop
--- old/kdemultimedia-4.5.85/kmix/kmixctrl_restore.desktop 2010-10-05 13:39:57.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/kmixctrl_restore.desktop 2011-01-04 15:15:50.000000000 +0100
@@ -50,7 +50,7 @@
Name[pt]=Repor a Configuração do Volume
Name[pt_BR]=Restaurar configurações do Mixer
Name[ro]=Reface setările mixerului
-Name[ru]=Восстановление настроек микшера
+Name[ru]=Восстановление параметров микшера
Name[se]=Máhcat mixerheivehusat
Name[sk]=Obnoviť nastavenie mixéra
Name[sl]=Obnovi nastavitve mešalnika
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/kmixd.desktop new/kdemultimedia-4.5.95/kmix/kmixd.desktop
--- old/kdemultimedia-4.5.85/kmix/kmixd.desktop 2010-12-03 16:00:09.000000000 +0100
+++ new/kdemultimedia-4.5.95/kmix/kmixd.desktop 2011-01-04 15:15:50.000000000 +0100
@@ -5,15 +5,18 @@
Name=KMixD
Name[bg]=KMixD
Name[ca]=KMixD
+Name[ca@valencia]=KMixD
Name[cs]=KMixD
Name[da]=KMixD
Name[de]=KMixD
Name[en_GB]=KMixD
Name[es]=KMixD
Name[et]=KMixD
+Name[fr]=KMixD
Name[hu]=KMixD
Name[is]=KMixD
Name[ja]=KMixD
+Name[kk]=KMixD
Name[km]=KMixD
Name[ko]=KMixD
Name[nb]=KMixD
@@ -24,16 +27,22 @@
Name[pt_BR]=KMixD
Name[ro]=KMixD
Name[ru]=KMixD
+Name[sl]=KMixD
+Name[sr]=К‑миксета‑д
+Name[sr@ijekavian]=К‑миксета‑д
+Name[sr@ijekavianlatin]=K‑mikseta‑d
+Name[sr@latin]=K‑mikseta‑d
Name[sv]=Kmixd
Name[th]=KMixD
Name[tr]=KMixD
Name[uk]=KMixD
Name[x-test]=xxKMixDxx
Name[zh_CN]=KMixD
-Name[zh_TW]=KMixD
+Name[zh_TW]=KMix 伺服程式
Comment=KMixD Mixer Service
Comment[bg]=Услуга KMixD за звуков смесител
Comment[ca]=Servei de mesclador KMixD
+Comment[ca@valencia]=Servei de mesclador KMixD
Comment[cs]=KMixD služba směšovače
Comment[da]=KMixD miksertjeneste
Comment[de]=KMixD-Lautstärkeregelungsdienst
@@ -42,6 +51,7 @@
Comment[et]=KMixD mikseriteenus
Comment[hu]=KMixD hangkeverő szolgáltatás
Comment[is]=KMixD hljóðblöndunarþjónusta
+Comment[kk]=KMixD микшер қызметі
Comment[km]=សេវាកម្មវិធីលាយ KMixD
Comment[ko]=KMixD 믹서 서비스
Comment[nb]=KMixD miksertjeneste
@@ -52,6 +62,11 @@
Comment[pt_BR]=Serviços de Mixer KMixD
Comment[ro]=KMixD serviciu mixer
Comment[ru]=Служба микшера KMixD
+Comment[sl]=Storitev mešalnika KMixD
+Comment[sr]=Миксетни сервис К‑миксете
+Comment[sr@ijekavian]=Миксетни сервис К‑миксете
+Comment[sr@ijekavianlatin]=Miksetni servis K‑miksete
+Comment[sr@latin]=Miksetni servis K‑miksete
Comment[sv]=Kmixd mixertjänst
Comment[th]=บริการผสมเสียง KMixD
Comment[tr]=KMixD Karıştırıcı Servisi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/kmix.desktop new/kdemultimedia-4.5.95/kmix/kmix.desktop
--- old/kdemultimedia-4.5.85/kmix/kmix.desktop 2010-10-05 13:39:57.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/kmix.desktop 2010-12-22 10:56:10.000000000 +0100
@@ -148,7 +148,7 @@
Name[x-test]=xxKMixxx
Name[zh_CN]=KMix
Name[zh_HK]=KMix
-Name[zh_TW]=KMix 混音器
+Name[zh_TW]=音效調整_KMix
X-KDE-StartupNotify=true
X-DBUS-StartupType=Unique
Categories=Qt;KDE;AudioVideo;Audio;Mixer;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kmix/restore_kmix_volumes.desktop new/kdemultimedia-4.5.95/kmix/restore_kmix_volumes.desktop
--- old/kdemultimedia-4.5.85/kmix/restore_kmix_volumes.desktop 2010-10-05 13:39:57.000000000 +0200
+++ new/kdemultimedia-4.5.95/kmix/restore_kmix_volumes.desktop 2011-01-04 15:15:50.000000000 +0100
@@ -51,7 +51,7 @@
Name[pt]=Repor os Volumes
Name[pt_BR]=Restaurar volumes do Mixer
Name[ro]=Reface volumele mixerului
-Name[ru]=Восстановление настроек микшера
+Name[ru]=Восстановление параметров микшера
Name[sk]=Obnoviť hlasitosti mixéra
Name[sl]=Obnovi nastavitve mešalnika
Name[sr]=Обнови јачине миксете
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/kscd/kscd.desktop new/kdemultimedia-4.5.95/kscd/kscd.desktop
--- old/kdemultimedia-4.5.85/kscd/kscd.desktop 2010-10-05 13:39:55.000000000 +0200
+++ new/kdemultimedia-4.5.95/kscd/kscd.desktop 2010-12-22 10:56:09.000000000 +0100
@@ -143,7 +143,7 @@
Name[x-test]=xxKsCDxx
Name[zh_CN]=KsCD
Name[zh_HK]=KsCD
-Name[zh_TW]=KsCD 播放器
+Name[zh_TW]=音樂播放_KsCD
Exec=kscd -caption "%c" %i
Icon=kscd
Type=Application
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdemultimedia-4.5.85/libkcompactdisc/kcompactdisc.cpp new/kdemultimedia-4.5.95/libkcompactdisc/kcompactdisc.cpp
--- old/kdemultimedia-4.5.85/libkcompactdisc/kcompactdisc.cpp 2010-10-05 13:39:56.000000000 +0200
+++ new/kdemultimedia-4.5.95/libkcompactdisc/kcompactdisc.cpp 2010-12-22 10:56:10.000000000 +0100
@@ -47,6 +47,11 @@
foreach(const Solid::Device &device, Solid::Device::listFromType(Solid::DeviceInterface::OpticalDrive)) {
kDebug() << device.udi().toLatin1().constData();
const Solid::Block *b = device.asSolid::Block();
+
+ if(!b) {
+ continue;
+ }
+
const Solid::OpticalDrive *o = device.asSolid::OpticalDrive();
Solid::OpticalDrive::MediumTypes mediumType = o->supportedMedia();
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org